/**
 * Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.babble.subitem.service.impl;

import com.babble.blog.feign.IBlogClient;
import com.babble.blog.vo.BlogVO;
import com.babble.subitem.conversion.SubjectItemConversion;
import com.babble.subitem.dto.SubjectItemSaveDTO;
import com.babble.subitem.dto.SubjectItemUpdDTO;
import com.babble.subitem.entity.SubjectItem;
import com.babble.subitem.mapper.SubjectItemMapper;
import com.babble.subitem.service.ISubjectItemService;
import com.babble.subitem.service.ISubjectService;
import com.babble.subitem.vo.SubjectItemVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 专题子项表 服务实现类
 *
 * @author Blade
 * @since 2021-11-21
 */
@RequiredArgsConstructor
@Service
public class SubjectItemServiceImpl extends ServiceImpl<SubjectItemMapper, SubjectItem> implements ISubjectItemService {
	public final ISubjectService subjectService;
	private final IBlogClient blogClicent;
	private final SubjectItemConversion subjectItemConversion;

	@Override
	public IPage<SubjectItemVO> selectSubjectItemPage(IPage<SubjectItemVO> page, SubjectItemVO subjectItem) {
		return page.setRecords(baseMapper.selectSubjectItemPage(page, subjectItem));
	}

	@Override
	public List<BlogVO> listSubjectItem(Map<String, Object> map) {
		//TODO (cyq)es查找

		return null;
	}

	@Override
	public void saveSubjectItem(SubjectItemSaveDTO subjectItemsaveDTO) {
		subjectService.getSubjcetIsId(subjectItemsaveDTO.getSubjectId());
		blogClicent.listOfBlogCategory(subjectItemsaveDTO.getBlogId()).getData();
		//TODO (cyq)es查看是否有重复的

		SubjectItem subjectItem = subjectItemConversion.SubjectItemSaveVOToSubjectItem(subjectItemsaveDTO);
		subjectItem.setCreateTime(LocalDateTime.now());
		subjectItem.setUpdateTime(LocalDateTime.now());
		this.save(subjectItem);
		//TODO (cyq) es添加数据
	}

	@Override
	public void updToSubjectItem(SubjectItemUpdDTO subjectItemUpdDTO) {
		SubjectItem entity = subjectItemConversion.SubjectItemUpdVOToSubjectItem(subjectItemUpdDTO);
		this.updateById(entity);
		SubjectItem byId = this.getById(entity.getId());
		//TODO (cyq)更新es数据
	}

	@Override
	public void delToSubjectItem(String id) {
		this.removeById(id);
		//TODO (cyq)删除es数据
	}
}
